<html>
<head><meta charset="utf-8"><title>queries for RLS · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html">queries for RLS</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="154267180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267180">(Jan 03 2019 at 21:20)</a>:</h4>
<p><span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> was asking me what concrete steps we should take to start transitioning the RLS model over to use the query system.</p>



<a name="154267191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267191">(Jan 03 2019 at 21:20)</a>:</h4>
<p>cc <span class="user-mention" data-user-id="124287">@mw</span>, <span class="user-mention" data-user-id="119009">@eddyb</span>, <span class="user-mention" data-user-id="116466">@Zoxc</span> and probably others</p>



<a name="154267334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267334">(Jan 03 2019 at 21:23)</a>:</h4>
<p>As a side note, I've been stalking and looking at <a href="https://github.com/salsa-rs/salsa" target="_blank" title="https://github.com/salsa-rs/salsa">https://github.com/salsa-rs/salsa</a> from afar, seeing as <span class="user-mention" data-user-id="133169">@Aleksey Kladov</span>  have been working on it for the Rust analyzer</p>



<a name="154267337"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267337" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267337">(Jan 03 2019 at 21:23)</a>:</h4>
<p>it seems to me that a first step might be to try to convert save analysis to use more queries internally</p>



<a name="154267345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267345">(Jan 03 2019 at 21:23)</a>:</h4>
<p>Do we see rustc transitioning to that model/implementation?</p>



<a name="154267355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267355">(Jan 03 2019 at 21:23)</a>:</h4>
<p>unclear at this time</p>



<a name="154267415"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267415" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267415">(Jan 03 2019 at 21:24)</a>:</h4>
<p>it's obviously derived from rustc, it's missing some things that rustc uses; I would like to see rustc move towards a model that is separate from rustc as salsa is, since I think it's much easier to look at the code that way</p>



<a name="154267423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267423">(Jan 03 2019 at 21:24)</a>:</h4>
<p>it seems likely that we can evolve salsa to meet rustc's needs</p>



<a name="154267448"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267448" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267448">(Jan 03 2019 at 21:25)</a>:</h4>
<p>makes sense, okay</p>



<a name="154267452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267452">(Jan 03 2019 at 21:25)</a>:</h4>
<p>but I think salsa as it is <em>today</em> is not quite there yet (notably, it doesn't implement persistence, but also some other things)</p>



<a name="154267471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267471">(Jan 03 2019 at 21:25)</a>:</h4>
<p>sadly <span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> i've got to run in a bit, but I'd like to dig more into the specifics here, I thik it'd be great to start taking some actual steps</p>



<a name="154267477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267477">(Jan 03 2019 at 21:25)</a>:</h4>
<p>sure thing</p>



<a name="154267486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267486">(Jan 03 2019 at 21:25)</a>:</h4>
<p>iirc the save analysis code today is not using a lot of queries, so I still think that's a logical place to start</p>



<a name="154267487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267487">(Jan 03 2019 at 21:25)</a>:</h4>
<p>so a good starting point would be to investigate save-analysis using queries internally?</p>



<a name="154267535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267535">(Jan 03 2019 at 21:26)</a>:</h4>
<p>right, and trying to move it towards something more incremental friendly</p>



<a name="154267540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267540">(Jan 03 2019 at 21:26)</a>:</h4>
<p>right now I think the RLS is not using incremental at all?</p>



<a name="154267563"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267563" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267563">(Jan 03 2019 at 21:26)</a>:</h4>
<p>even if we still kept the "one big file of data per crate" model that I think save analysis has,</p>



<a name="154267571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267571">(Jan 03 2019 at 21:26)</a>:</h4>
<p>it can still use incremental internally to e.g. avoid redoing type-checking for things that haven't changed</p>



<a name="154267601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267601">(Jan 03 2019 at 21:27)</a>:</h4>
<p>( I should note that I've not looked closely at the code recently and I may be out of date, so if you see me saying things that seem wrong, tell me :) )</p>



<a name="154267673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267673">(Jan 03 2019 at 21:28)</a>:</h4>
<p>we do run rustc in-process just like Cargo would but iirc we don't set anything for the incremental, so I think by default we should be using incremental between every passes</p>



<a name="154267691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154267691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154267691">(Jan 03 2019 at 21:28)</a>:</h4>
<p>the analysis json blobs is used for dependencies, which we then read into the 'index', which is basically the database for everything IDE can query</p>



<a name="154274370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154274370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154274370">(Jan 03 2019 at 23:28)</a>:</h4>
<p>Hi!</p>
<p>This perhaps is a good place to ask “how the ideal interface between rustc and RLS should like?” Sure, we can querize save analysis, and that’s probably the easiest thing to do, but is it the right thing?</p>
<p>I’ve been pondering “object oriented code model” interface. That is, you have types like “crate”, “module”, “function», etc. module has parent, children, functions method which return apropriate objects. All objects look as if they are fully compiled: all references are resolved, all types are infered, etc.</p>
<p>This model will be convenient to use on the ide (and probably rustdoc) side to use. It will also give us an enormose amount of flexibility, if the “implementation” of the model is swappable. I see at least two long term back ends for OO code model.</p>
<p>The first one is lazy on demand query based backend (although the model looks like as if everything is computed, it certainly can just kick queries when methods are called).</p>
<p>The second one is backed by a data file. That is, a model which reads something like save analysis, where method calls deserialize various bits of data.</p>
<p>And, of course, in the meantime rust-analyzer can also produce such a model :-)</p>



<a name="154274507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154274507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154274507">(Jan 03 2019 at 23:30)</a>:</h4>
<p>An action item here (if we want to go this route) is to create such a model with a pluggable  backend in a separate repo, and then write the impl for rust</p>



<a name="154274559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154274559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154274559">(Jan 03 2019 at 23:31)</a>:</h4>
<p>This crate will have a set of concrete types used by consumers, and a trait definition (not implementation) for producers</p>



<a name="154274621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154274621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154274621">(Jan 03 2019 at 23:32)</a>:</h4>
<p>So ‘trait Backend’ and ‘struct Module { backend: Arc&lt;dyn Backend&gt;, id: u32 }’</p>



<a name="154274680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154274680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154274680">(Jan 03 2019 at 23:33)</a>:</h4>
<p>I am fairly confident in this design, and I’d love to start working on it :)</p>
<p>Perhaps this needs an implementation RFC though?</p>



<a name="154274739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154274739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154274739">(Jan 03 2019 at 23:34)</a>:</h4>
<p>cc <span class="user-mention" data-user-id="116011">@Steve Klabnik</span> : that’s the stuff we’ve discussed at rust-analyzer Discord</p>



<a name="154377190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154377190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Steve Klabnik <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154377190">(Jan 03 2019 at 23:43)</a>:</h4>
<p><span class="emoji emoji-1f44d" title="+1">:+1:</span></p>



<a name="154379955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154379955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154379955">(Jan 04 2019 at 00:41)</a>:</h4>
<p>To put code where my mouth is, here's a super-minimal code model (as a separate crate), and the corresponding rust-analyzer impl: <a href="https://github.com/rust-analyzer/rust-analyzer/commit/f6ee0a5e57645c7bd87c1f39f11908fb5c2deefa" target="_blank" title="https://github.com/rust-analyzer/rust-analyzer/commit/f6ee0a5e57645c7bd87c1f39f11908fb5c2deefa">https://github.com/rust-analyzer/rust-analyzer/commit/f6ee0a5e57645c7bd87c1f39f11908fb5c2deefa</a></p>



<a name="154402289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154402289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154402289">(Jan 04 2019 at 11:02)</a>:</h4>
<p>As of now, I'd say that <code>rls-analysis</code> crate acts as this interface for the RLS - everything is resolved, we operate on items with ids, know their kind, know their parent/child hierarchy</p>



<a name="154402299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154402299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154402299">(Jan 04 2019 at 11:02)</a>:</h4>
<p>and <code>rls-data</code> (emitted by <code>librustc_save_analysis</code>) is consumed by the rls-analysis and lowered to make multi-crate analysis work and for the IDs not to clash</p>



<a name="154402310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154402310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154402310">(Jan 04 2019 at 11:03)</a>:</h4>
<p>so it's more of an implementation detail - one could imagine we could try and plug in query-like backend to the <code>rls-analysis</code> and see how far along can we go with this</p>



<a name="154404064"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154404064" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154404064">(Jan 04 2019 at 11:52)</a>:</h4>
<p>rls-analysis is not an object model.</p>
<p>I'd love to see something more like this:</p>
<div class="codehilite"><pre><span></span>impl Function {
    fn name() -&gt; String;
    fn return_type() -&gt; Type;
    fn parameters() -&gt; Vec&lt;Type&gt;;
}
</pre></div>


<p>In contrast, save-analysis more or less exposes the raw data, and it's API shape is dictated by the shape of these data.</p>
<p>There's a big difference in abstraction level between, for exmaple <a href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.semanticmodel?view=roslyn-dotnet" target="_blank" title="https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.semanticmodel?view=roslyn-dotnet">C# model</a> and <a href="https://docs.rs/rls-analysis/0.16.10/rls_analysis/" target="_blank" title="https://docs.rs/rls-analysis/0.16.10/rls_analysis/">save analysis api</a>.</p>



<a name="154404191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154404191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154404191">(Jan 04 2019 at 11:55)</a>:</h4>
<p>that's this <code>impl Function</code> in C# that I am talking about: <a href="https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.imethodsymbol" target="_blank" title="https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.imethodsymbol">https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.imethodsymbol</a></p>



<a name="154406283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154406283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154406283">(Jan 04 2019 at 12:41)</a>:</h4>
<p>Thanks for C# model, interesting!</p>



<a name="154406368"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154406368" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154406368">(Jan 04 2019 at 12:43)</a>:</h4>
<p>Re save analysis api, it’s crude and not really polished; I just wanted to observe that with the exposed API can act as an interface for pluggable backends (query, data-backed)</p>



<a name="154406374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154406374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154406374">(Jan 04 2019 at 12:43)</a>:</h4>
<p>and it should contain all the necessary information to expose the object model on top, I believe?</p>



<a name="154406437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154406437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154406437">(Jan 04 2019 at 12:44)</a>:</h4>
<p>These are mostly implementation details, however; I’m not arguing what’s the better abstraction for the comsumers</p>



<a name="154406458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154406458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154406458">(Jan 04 2019 at 12:45)</a>:</h4>
<blockquote>
<p>and it should contain all the necessary information to expose the object model on top, I believe?</p>
</blockquote>
<p>yep, rls-analysis could be a backend for the model I am proposing.</p>



<a name="154407400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154407400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154407400">(Jan 04 2019 at 13:02)</a>:</h4>
<p>(by the way, is there a way to subscribe to this topic alone or add it to favorites or similar?)</p>



<a name="154601755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154601755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154601755">(Jan 07 2019 at 21:15)</a>:</h4>
<p><span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> I don't know of a way to subscribe to one <strong>topic</strong>, but maybe we should make a stream for this. I think in general we need more streams.</p>



<a name="154601758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154601758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154601758">(Jan 07 2019 at 21:15)</a>:</h4>
<p>e.g., maybe a #t-compiler/RLS or something</p>



<a name="154606703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154606703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> blitzerr <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154606703">(Jan 07 2019 at 22:26)</a>:</h4>
<p><span class="user-mention" data-user-id="153740">@Igor Matuszewski</span> <br>
Unfortunately not at the moment. I created an <a href="https://github.com/zulip/zulip/issues/11042" target="_blank" title="https://github.com/zulip/zulip/issues/11042">issue</a> for zulip</p>



<a name="154606724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154606724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154606724">(Jan 07 2019 at 22:27)</a>:</h4>
<p>Thanks for the heads up!</p>



<a name="154606798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154606798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154606798">(Jan 07 2019 at 22:28)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I’m not a frequent (yet? <span class="emoji emoji-1f609" title="wink">:wink:</span>) user of Zulip so I can’t say</p>



<a name="154606828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154606828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Igor Matuszewski <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154606828">(Jan 07 2019 at 22:28)</a>:</h4>
<p>But I imagine RLS or E2E queries should be big enough topic to cover multiple, er, topics</p>



<a name="154739298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154739298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154739298">(Jan 09 2019 at 17:00)</a>:</h4>
<p>yeah, I suspect we should be creating more zulip streams</p>



<a name="154739302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/queries%20for%20RLS/near/154739302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/queries.20for.20RLS.html#154739302">(Jan 09 2019 at 17:01)</a>:</h4>
<p>we had talked about a help stream, for example</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>